<template>
  <div>
    <div class="bg-white grid-content">
      <div style="overflow: hidden; padding-bottom:8px;">
        <div class="mytitle"><svg-icon icon-class="yjbb" class="myIcon" />油井班报数据</div>
        <div class="myButtons">
          <el-button @click="handleClick('', 'add')">新增</el-button>
          <a :href=token><el-button style="margin: 0 10px;">下载模板</el-button></a>
          <el-button
            class="import-button"
            @click="uploadFiles"
          >
            <i class="icon"></i>
            批量导入
          </el-button>
          <el-dialog title="批量导入" :visible.sync="importDialog" class="dialog-md" width="500px" :before-close="handleClose1">
            <el-form ref="fileForm" label-position="center" style="width: 100%" enctype="multipart/form-data">
              <el-form-item align="center" label="">
                <el-upload
                  ref="upload"
                  class="uploadDialog"
                  name="myfile"
                  action="string"
                  :http-request="httpRequest"
                  :on-change="handleChange"
                  :on-remove="handleRemove"
                  :limit="1"
                  :file-list="fileList"
                  accept=".xlsx,.xls"
                  :auto-upload="true"
                >
                  <el-button slot="trigger" size="small" type="primary">上传文件</el-button>
                  <div class="el-upload__tip" style="color: grey;">建议下载模板进行导入</div>
                  <div class="el-upload__tip">1.仅支持上传.xls、.xlsx文件</div>  
                  <div class="el-upload__tip">2.文件数据不能超过1000条</div>
                  
                </el-upload>
              </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
              <el-button size="small" @click="cancelUpload()">取消</el-button>
              <el-button type="primary" size="small" @click="upload()" :disabled="uploading">确定导入</el-button>
            </span>
          </el-dialog>
        </div>
      </div>
      <!-- 表格 -->
      <el-table :data="tableData" :header-cell-style="{background:'#F5F7FA',color:'#909399'}" border stripe>
        <el-table-column align="center" type="index" label="序号" :index="indexMethod" width="60">
          </el-table-column>
          <el-table-column align="center" prop="jh" label="井号">
          </el-table-column>
          <el-table-column align="center" prop="rq" label="日期">
          </el-table-column>
          <el-table-column align="center" prop="scsj" label="生产时间">
          </el-table-column>
          <el-table-column align="center" prop="cc" label="冲程">
          </el-table-column>
          <el-table-column align="center" prop="cc1" label="冲次">
          </el-table-column>
          <el-table-column align="center" prop="ty" label="套压">
          </el-table-column>
          <el-table-column align="center" prop="hy" label="回压">
          </el-table-column>
          <el-table-column align="center" prop="rcyl1" label="日产液量">
          </el-table-column>
          <el-table-column align="center" prop="dy" label="电压">
          </el-table-column>
          <el-table-column align="center" prop="sxdl" label="上行电流">
          </el-table-column>
          <el-table-column align="center" prop="xxdl" label="下行电流">
          </el-table-column>
          <el-table-column align="center" prop="hdl" label="耗电量">
          </el-table-column>
          <el-table-column align="center" prop="jkwd" label="井口温度">
          </el-table-column>
          <el-table-column align="center" prop="dbds" label="电表底数">
          </el-table-column>

          <el-table-column align="center" prop="approveStatus" width="180px" fixed="right" label="审核">
              <template slot-scope="scope">
                <el-button v-if="scope.row.approveStatus == 0" @click="handSubmit(scope.row)" type="text" style="color: orange">提交审核</el-button>
                <el-tooltip v-else :content="scope.row.approveBz" placement="right" effect="light" :disabled="!scope.row.approveBz">
                  <el-badge :is-dot="scope.row.approveBz!=''&&scope.row.approveBz!=null" class="item">
                    <el-tag :class="scope.row.approveBz?'tagstyle':''"
                    :type="
                      scope.row.approveStatus == '5'
                      ?'success'
                      :scope.row.approveStatus == '4'
                        ? 'danger'
                        : scope.row.approveStatus == '3'
                          ? ''
                          :scope.row.approveStatus == '2'
                            ? 'danger'
                            :scope.row.approveStatus == '1'
                              ? 'warning'
                              :'info'"
                      disable-transitions>{{
                      scope.row.approveStatus == '5'
                      ?'管理部通过'
                      :scope.row.approveStatus == '4'
                        ? '管理部未通过'
                        : scope.row.approveStatus == '3'
                          ? '作业区通过待管理部审核'
                          :scope.row.approveStatus == '2'
                            ? '作业区未通过'
                            :scope.row.approveStatus == '1'
                              ? '已上报待作业区审核'
                              :'待上报'
                    }}</el-tag>
                  </el-badge>
                </el-tooltip>
              </template>
            </el-table-column>

          <el-table-column align="center" fixed="right" label="操作" width="140">
            <template slot-scope="scope">
              <el-button @click="handleClick(scope.row, 'check')" type="text" style="color: #2ec02e">查看</el-button>
              <el-button @click="handleClick(scope.row, 'edit')" type="text">编辑</el-button>
              <el-button @click="handleDelete(scope.row)" type="text" style="color: red">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
      <!-- 分页器 -->
      <el-pagination align='right'
          background
          @size-change="handleSizeChange" 
          @current-change="handleCurrentChange" 
          :current-page="pageNo"
          :page-sizes="[5,10, 20, 30, 40, 50]" 
          :page-size="pageSize" 
          layout="total, sizes, prev, pager, next, jumper"
          :total="total">
        </el-pagination>
    </div>

    <!-- 弹出框 -->
    <el-dialog :title="myDialogTitle" :visible.sync="dialogFormVisible" :before-close="handleClose" custom-class="saveAsDialog">

      <el-form :inline="true" :model="yjbbForm" class="demo-form-inline" :rules="rules" ref="yjbbForm" :disabled="isInput" label-position="left" label-width="130px" >
        <!-- <el-divider content-position="left">基础信息</el-divider> -->
        <el-row>
            <el-col :span="12">
              <el-form-item label="井:" prop="jh">
                <el-select v-model="yjbbForm.jh" placeholder="请选择井" filterable>
                  <el-option
                      v-for="(item,index) in jhList"
                      :key="item.jh"
                      :label="item.jh"
                      :value="item.jh"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="日期:" prop="rq">
                <el-date-picker v-model="yjbbForm.rq" align="right" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="生产时间:" prop="scsj">
                <!-- <el-date-picker v-model="yjbbForm.scsj" align="right" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions">
                </el-date-picker> -->
                <el-input v-model="yjbbForm.scsj" placeholder="请输入生产时间"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="冲程:">
                <el-input v-model="yjbbForm.cc" placeholder="请输入冲程"></el-input>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row>
            <el-col :span="12">
              <el-form-item label="冲次:">
                <el-input v-model="yjbbForm.cc1" placeholder="请输入冲次"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="套压:">
                <el-input v-model="yjbbForm.ty" placeholder="请输入套压"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="回压:">
                <el-input v-model="yjbbForm.hy" placeholder="请输入回压"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="日产液量:">
                <el-input v-model="yjbbForm.rcyl1" placeholder="请输入日产液量"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="电压:">
                <el-input v-model="yjbbForm.dy" placeholder="请输入电压"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="上行电流:">
                <el-input v-model="yjbbForm.sxdl" placeholder="请输入上行电流"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="下行电流:">
                <el-input v-model="yjbbForm.xxdl" placeholder="请输入下行电流"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="耗电量:">
                <el-input v-model="yjbbForm.hdl" placeholder="请输入耗电量"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="井口温度:">
                <el-input v-model="yjbbForm.jkwd" placeholder="请输入井口温度"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="电表底数:">
                <el-input v-model="yjbbForm.dbds" placeholder="请输入电表底数"></el-input>
              </el-form-item>
            </el-col>
          </el-row>

      </el-form>

      <div slot="footer" class="dialog-footer" v-show="!ischeck">
        <el-button @click="close('yjbbForm')">取 消</el-button>
        <el-button type="primary" @click="submitForm('yjbbForm')">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import axios from "axios";
import { getToken } from "@/utils/auth";
import yjApi from '@/api/jcsj/jcsy/yjjcsj';
import yjbbApi from '@/api/jcsj/scgl/jsj/yjbb';

export default {
  data() {
    return {
      leve:'',
      // show:false,//隐藏序列
      pageNo: 1, //当前页码
      pageSize: 10, //每页显示数量
      total: 0, //总数量
      // table数据
      tableData: [],
      //当前页码
      currentPage: 1,
      //表单填报的数据
      yjbbForm: {
        jh:'',
        rq:'',//日期
        scsj:'',//生产时间
        cc:'',//冲程
        cc1: '',//冲次
        ty: '',//套压
        hy: '',//回压
        rcyl1: '',//日产液量
        dy: '',//电压
        sxdl: '',//上行电流
        xxdl: '',//下行电流
        hdl: '',//耗电量
        jkwd: '',//井口温度
        dbds: '',//电表底数
        approveStatus:'',
        approveBz:'',
      },
      //验证规则
      rules: {
        jh: [
          { required: true, message: '请选择井', trigger: 'blur' },
        ],
        rq: [
          { required: true, message: '请选择日期', trigger: 'blur' },
        ],
        scsj: [
          { required: true, message: '请选择生产时间', trigger: 'blur' },
        ],
      },
      //时间快捷选择
      pickerOptions: {
        // disabledDate(time) {
        //   return time.getTime() > Date.now();
        // },
        shortcuts: [{
          text: '今天',
          onClick(picker) {
            picker.$emit('pick', new Date());
          }
        }, {
          text: '昨天',
          onClick(picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24);
            picker.$emit('pick', date);
          }
        }, {
          text: '一周前',
          onClick(picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
            picker.$emit('pick', date);
          }
        }]
      },
      //获取当前日期
      currentTime:'',
      //编辑框是否显示
      dialogFormVisible: false,
      //弹出框是否是查看
      ischeck: false,
      //控制查看时不可更改数据
      isInput:false,
      //弹出框标题
      myDialogTitle: '',
      //是否新增
      isadd: true,
      //获取机构列表
      jhList:[],

      file: null,
      //加载动画
      uploadLoading: false,
      //上传的文件列表
      fileList: [],
      //控制弹出框显示与否
      uploadShowDialog: false,
      //上传地址
      uploadURL: '',
      //loading加载中
      downloadLoading: '',
      importDialog:false,
      fileList:[],
      urlFile:'',
      uploading:true,
      token:'',
    }
  },
  created(){
    this.search();
    this.$data.leve = sessionStorage.getItem("userLeve");
    this.token="http://47.108.251.250:3296/api/scYjbb/downLoadExcel?token="+getToken();
  },
  mounted(){
    this.searchJh();  
    this.filterTime();
  },
  methods: {
    /**
    * 查询列表
    */
    async search() {
      // this.pageNo = pageNo; //当前页码
      // this.pageSize = pageSize; //每页显示数量
      //发送查询请求
      let res = await yjbbApi.getList({pageNo:this.pageNo,pageSize:this.pageSize});
      //判断是否成功
      if(res.success){
        console.log(res.data);
        //赋值
        this.tableData = res.data.records;
        //总数量
        this.total = res.data.total;
      }
    },
    //查询机构列表
    async searchJh() {
      //发送查询请求
      let res = await yjApi.getList({pageNo:-1,pageSize:-1});
      //判断是否成功
      if(res.success){
        console.log('jg'+res.data.records);
        //赋值
        this.jhList = res.data.records;
        //总数量
      }
    },
    onSubmit() {
      console.log('submit!');
    },
    //关闭对话框
    handleClose(done) {      
      // 清空表单
      // this.$refs['yjbbForm'].resetFields();
      // 清空表单校验，避免再次进来会出现上次校验的记录
      this.$refs['yjbbForm'].clearValidate()
      done()
      
    },
      // 弹框关闭触发
    close(formName) {
      this.dialogFormVisible = false;
      // 清空表单
      // this.$refs[formName].resetFields();
      // 清空表单校验，避免再次进来会出现上次校验的记录
      this.$refs[formName].clearValidate()
    },

    submitForm(formName) {
      //表单验证
      this.$refs[formName].validate(async (valid) => {
          if (valid) {
              let res = null;
              console.log('111'+this.yjbbForm.bzid)
              //判断ID是否为空
              if (this.isadd) {     
                  console.log(this.yjbbForm)
                  //发送添加请求
                  res = await yjbbApi.add(this.yjbbForm);
              } else {
                  //编辑时重置审核状态
                  this.yjbbForm.approveStatus = 0
                  this.yjbbForm.approveBz = ''
                  //发送修改请求
                  res = await yjbbApi.update(this.yjbbForm);
              }
              console.log(res)
              //判断是否成功
              if (res.success) {
                  this.$message.success(res.message);
                  //刷新
                  this.search();
                  //关闭窗口
                  this.dialogFormVisible = false;
              } else {
                console.log(res)
                  this.$message.error(res.message);
              }
          }
      })
    },
    handleClick(row, handle) {
      // console.log(row.approveStatus);
      this.dialogFormVisible = true;
      if (handle == 'check') {
        this.myDialogTitle = '油井班报数据'
        this.ischeck = true    
        this.isInput = true;// 1.表单禁用
        // this.yjbbForm = row
        this.$objCopy(row, this.yjbbForm);//把当前要编辑的数据复制到数据域，给表单回显
        this.$message({ message: '成功打开', type: 'success' });
      } else if (handle == 'edit') {
        if(row.approveStatus == 0 || row.approveStatus == 2 || row.approveStatus == 4){
            this.myDialogTitle = '油井班报数据编辑'
            this.ischeck = false
            this.isInput = false    
            this.isadd = false 
            this.$objCopy(row, this.yjbbForm);//把当前要编辑的数据复制到数据域，给表单回显
          }else{
            this.dialogFormVisible = false;
            this.$message.error('此状态不可编辑！');
          }

      } else if (handle == 'add') {
        // this.yjbbForm ={}
        this.$resetForm("yjbbForm", this.yjbbForm); //清空表单数据
        this.myDialogTitle = '油井班报数据填报'
        this.ischeck = false
        this.isadd = true
        this.isInput = false
      }
    },

    //删除行数据
    async handleDelete(row) {
      if(row.approveStatus == 0 || row.approveStatus == 2 || row.approveStatus == 4 || this.leve == 999 || this.leve == 1000){
        let confirm = await this.$myconfirm("确定要删除该数据吗?");
        console.log(confirm)
        if (confirm) {
          //发送删除请求
          let res = await yjbbApi.delete({ jh: row.jh,rq: row.rq,scsj: row.scsj });
          console.log(res)
          //判断是否成功
          if (res.success) {
              //成功提示
              this.$message.success(res.message);
              //刷新
              this.search();
          } else {
              //失败提示
              this.$message.error(res.message);
          }
        }
        }else{
          this.$message.error('此状态不可删除！');
        }

    },
    //上报
    handSubmit(row){
      this.$confirm('确定提交审核?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(async () => {
          let res = null;    
          this.$objCopy(row, this.yjbbForm);
          //审核
          this.yjbbForm.approveStatus = 1
          console.log(this.yjbbForm);
          res = await yjbbApi.update(this.yjbbForm);

          console.log(res)
          //判断是否成功
          if (res.success) {
              // this.$message.success(res.message);
              this.$message({ message: '提交审核成功！', type: 'success' });
              //刷新
              this.search();

          } else {
            console.log(res)
              this.$message.error(res.message);
          }
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消'
          });          
        });

      },
      //批量删除
    handleSelectionChange(val){
      this.multipleSelection = val;
      console.log(this.multipleSelection);
    },
    async handleBDelete() {
      //判断是否可以删除
      //确认是否删除
      let confirm = await this.$myconfirm("确定要删除该数据吗?");
      console.log(confirm)
      var ids = []
      if (confirm) {
          for(let j=0 ; j<this.multipleSelection.length; j++){
              if (this.multipleSelection[j].approveStatus == 2) {
                  //提示不能删除
                  console.log(this.multipleSelection[j].approveStatus)
                  this.$message({ message: '有已通过数据不可删除！', type: 'error' });
                  return;
              
              }
              ids[j] = this.multipleSelection[j].id
          }
          console.log("ids",ids)
          // const ids = ids.toString();
          // console.log("ids",ids)
          //发送删除请求
          console.log('111')
          let res = await xcwxApi.Bdelete(ids);
          console.log('222')
          console.log(res)
          //判断是否成功
          if (res.success) {
          //成功提示
          this.$message.success(res.message);
          //刷新
          this.search();
          } else {
          //失败提示
          this.$message.error(res.message);
          }
      }
    },

    //批量导入部分
    handleClose1(done) {  
      this.urlFile = ''  
      this.fileList =[];  
      done()     
    },
    uploadFiles() {
      this.importDialog = true
      this.urlFile = ''
    },
    cancelUpload(){
      this.urlFile = ''
      this.fileList = [];
      this.importDialog = false
    },
    //  监听改变
    handleChange(file, fileList) {
      this.fileList = fileList
    },
    // 移除
    handleRemove(file, fileList) {
      this.fileList = fileList
    },
    beforeAvatarUpload(file) {
      //1MB=1024*1024(1MB=1024KB 1KB=1024MB)
      const is10M = file.size / 1024 / 1024 < 10;
       //限制文件上传大小
      if (!is10M) {
        this.$message.error("上传图片大小不能超过 10MB!");
        return false
      }
      return true
    },
    //上传成功之后清除历史记录
    // handleSuccess(fileList) {
    //   this.fileList = [];
    //   this.$refs['fileForm'].upload.clearFiles() 
    // },
    // 自定义上传Excel方法
    httpRequest(param) {
      // console.log(param.file);
      this.uploading = true;
      const File = this.fileList[0].raw;
      // const File = param.file
      // console.log(File);
      // console.log(this.fileList);
      let formData = new FormData();
      formData.append("myfile", File);
      console.log(formData.get("myfile"));

      axios({
      url: "http://47.108.251.250:3296/api/fileAbout/fileUpload",
      method: "post",
      headers: {
        "token": getToken(),
        "Content-Type": "multipart/form-data",
      },
      data: formData,
        }).then(
          (response) => {
            if (response.data.success === true && response.data.data!=="") {
              console.log(response.data);
              this.urlFile = response.data.data;
              console.log(this.urlFile);
              this.$message.success(response.data.message);
              param.onSuccess();
              this.uploading = false;
            }else{
              this.$message.error('上传失败');
            }    
          },
          (error) => {
            console.log(error);
            this.$message.error('上传失败');
          }
        );
    },      
    //文件导入
    upload(){
      let formData = new FormData();
      formData.append("filePath",this.urlFile);
      console.log(formData.get("filePath"));
      axios({
      url: "http://47.108.251.250:3296/api/scYjbb/batchInput",
      method: "post",
      headers: {
        "token": getToken(),
        "Content-Type": "multipart/form-data",
      },
      data: formData,
        }).then(
          (response) => {
            if (response.data.success === true) {
              console.log(response.data);
              this.$message.success(response.data.message);
              //刷新
              this.search();
              //关闭窗口
              this.importDialog = false;
              this.fileList = []; 
            }else{
              this.$message.error('导入失败');
            }    
          },
          (error) => {
            console.log(error);
            this.$message.error('导入失败');
          }
        );
    },


    //下载模板
    downloadExcel(){
      window.open("http://47.108.251.250:3296/api/scYjbb/downLoadExcel?token="+getToken());
    },

    /*** 当每页数量发生变化时触发该事件 */
    handleSizeChange(size) {
      console.log(size);
      this.pageSize = size;
      //将每页显示的数量交给成员变量
      this.search(this.pageNo, size);
    },
    /*** 当页码发生变化时触发该事件 */
    handleCurrentChange(page) {
      console.log(page);
      this.pageNo = page;
      //调用查询方法
      this.search(page, this.pageSize);
    },
    // 序号计算
    indexMethod (index) {
    // index默认在0开始，这里+1
      return index + 1 + (this.pageNo - 1) * this.pageSize
    },
    // 获取当前日期
    filterTime() {
      var date = new Date();
      var y = date.getFullYear();
      var m = date.getMonth() + 1;
      m = m < 10 ? '0' + m : m;
      var d = date.getDate();
      d = d < 10 ? '0' + d : d;
      this.currentTime = y + '-' + m + '-' + d;
      // console.log(typeof(new Date(this.currentTime)));
    },
  }
}
</script>

<style lang="scss" scoped>
// 标题
.mytitle {
  font-size: large;
  padding-left: 10px;
  margin-bottom: 16px;
  float: left;
}

//按钮组
.myButtons {
  float: right
}

//格子的样式
.bg-white {
  background: #ffffff;
}

.grid-content {
  padding: 10px;
  margin-bottom: 10px;
  border-radius: 4px;
}

.calendar ::v-deep .el-button-group::before {
  display: none;
}

.calendar ::v-deep .el-button-group::after {
  display: none;
}

// 分割线样式
.el-divider--horizontal {
  display: block;
  height: 2px;
  width: 100%;
  margin: 24px 0;
}

// 表单各项的样式
.el-form-item {
  margin: 15px 10px 15px 10px;
}

//表单禁用字体样式
.el-input.is-disabled ::v-deep .el-input__inner {
    color: #606266;
  }
//对话框宽度
// .customWidth{
//         width:80%;
//     }
::v-deep .saveAsDialog {
  width: 50% !important;
}

::v-deep .el-table .cell{overflow: unset}
//日期选择框宽度
.el-date-editor.el-input, .el-date-editor.el-input__inner { width: 200px; }

.el-input {
  width: 200px;
}

.tagstyle{
    cursor: pointer;
  }
</style>